功能需求
鬧鐘
- 貪睡功能
倒計時
- 自動重複
- 彈窗提醒
碼表
通用功能
- 自訂鬧鈴聲音
開發環境
1 | python 2.7 |
思路心得
主程序 Frame
程序內的Label、button等都是透過座標做定位,如果程序視窗最大化將會破壞佈局,所以在Frame style選擇中不顯示”視窗最大化”按鈕。
1 | wx.Frame.__init__(self...,style=wx.CAPTION | wx.CLOSE_BOX | wx.MINIMIZE_BOX | wx.TAB_TRAVERSAL) |
佈局
功能上由於是透過下拉選單來選擇,所以佈局上都是透過Show or Hide來顯示對應功能的對象。
1 | self.Label_Stopwatch = wx.StaticText(self, wx.ID_ANY, u"00:00:00", (35, 90), wx.Size(200, 40), wx.TE_CENTRE) |
定時器
主要功能核心”定時器 Timer”,創建定時器時需要為定時器綁定一個event函數,再來可以根據情況設定運行時間(例如:一秒),默認會是循環運行(每隔一秒),也可設定參數只執行一次,在循環運行過程中也可以被按鈕事件觸發停止運行。
- 系統時間定時器
在創建程序時先執行每1秒獲取電腦時間的定時器,鬧鐘及倒計時功能都是與系統時間比對後實現的。
1 |
|
倒計時功能
相比鬧鐘功能,倒計時在設計上不能以減一秒的方式進行判斷,由於在每次判斷都有毫秒差,時間一長就有分秒差,原先設定倒計時5分鐘的循環到後面提醒的時間將會越來越快。
因此判斷上必須將”倒數時間+當前時間”設一個end變數,每隔一秒的判斷其實就是end減當前時間,如果有自動重複功能 也是end變數加上設定的倒數時間,這樣才不會有誤差。
1 | # 設定時間加上當前時間 |
Dialog
Dialog對話彈窗,設定檔案路徑及提醒訊息,透過event呼叫的wx.Dialog,再將設定的值傳回類。
1 | def OnBeepSetting(self, event): |